INSTRUCCIONES IF, ELIF, ELSE
El intérprete de Python ejecuta un programa ejecutando una instrucción cada vez.
if <condition>:
<do something>
elif <condition2>:
<do other thing>
else:
<do other thing>
Recordar que en Python los bloques se delimitan por sangrado.
Cuando ponemos los dos puntos al final de la primera línea del condicional, todo lo que vaya a continuación con un nivel de sangrado superior se considera dentro del condicional.
En cuanto escribimos la primera línea con un nivel de sangrado inferior, hemos cerrado el condicional.
In [26]:
x, y = 2, 0
if x > y:
print("x es mayor que y")
print("x sigue siendo mayor que y")
In [3]:
if 1 < 0:
print("1 es mayor que 0") # esto está dentro de bucle, pero no se escribe por que no cumple que 1 sea menor que 0
print("Esto se ejecuta siempre") # esto no está dentro del bloque y SE ejecuta siempre; ya que no pertenece al IF
In [4]:
if 1 < 0:
print("1 es menor que 0")
print("1 sigue siendo menor que 0") # error de sangrado, porque el sangrado es superior
Si queremos añadir ramas adicionales al condicional, podemos emplear la instrucción elif (abreviatura de else if). Para la parte final, que debe ejecutarse si ninguna de las condiciones anteriores se ha cumplido, usamos la instrucción else.
In [7]:
x, y = 2, 0
if x > y:
print("x es mayor que y")
else:
print("x es menor que y")
In [18]:
# Uso de ELIF (contracción de else if)
x, y = 2 , 0
if x < y:
print("x es menor que y")
elif x == y:
print("x es igual a y")
else:
print("x es mayor que y")
EXPRESIONES TERNARIAS
Las expresiones ternarias en Python tienen la siguiente forma:
e = valorSiTrue if <condicion> else valorSiFalse
Permite definir la instrucción if-else en una sola línea. La expresión anterior es equivalente a:
if <condicion>:
e = valorSiTrue
else:
e = valorSiFalse
In [38]:
# Una expresión ternaria es una contracción de un bucle FOR
# Se define la variable para poder comparar
x = 8
# Se puede escrbir la expresión de esta manera o almacenando el resultado dentro de una variable
# para trabajar posteriormente con ella
"Hola CICE" if x == 8 else "Adios CICE"
a = 'x es igual a 8' if x == 8 else 'x es distinto de 8'
a
Out[38]:
BUCLES FOR Y WHILE
El bucle FOR
Permite realizar una tarea un número fijo de veces. Se utiliza para recorrer una colección completa de elementos (una tupla, una lista, un diccionario, etc ):
for <element> in <iterable_object>:
<hacer algo...>
Aquí el objeto <iterable_object> puede ser una lista, tupla, array, diccionario, etc.
El bucle se repite un número fijo de veces, que es la longitud de la colección de elementos.
In [30]:
# itera soble los elementos de la tupla
for elemento in (1, 2, 3, 4, 5):
print(elemento)
In [42]:
# Suma todos los elementos de la tupla
suma = 0
for elemento in (1, 2, 3, 4, 5):
suma = suma + elemento
print(suma)
In [47]:
# Muestra todos los elemntos de una lista
dias = ["Lunes", "Martes", "Miércoles", "Jueves", 'Viernes', 'Sábado', 'Domingo']
for nombre in dias:
print(nombre)
In [48]:
# La instrucción CONTINUE permite saltar de una iteración a otra
# Crea la lista de enteros en el intervalo [0,10)
# No se ejecuta si j es un número par, gracias a la sentencia continue
for j in range(10):
if j % 2 == 0:
continue
print(j)
In [51]:
# También es posible recorrer un diccionario mediante el bucle FOR
# dic.items
# dic.keys
# dic.values
dic = {1:'Lunes', 2:'Martes', 3:'Miércoles' }
# Python 3.5
for i in dic.items():
print(i)
In [35]:
dic = {1:'Lunes', 2:'Martes', 3:'Miércoles' }
# Python 3.5
for (clave, valor) in dic.items():
print("La clave es: " + str(clave) + " y el valor es: " + valor)
In [36]:
dic.items(), dic.keys(), dic.values()
Out[36]:
El bucle WHILE
Los bucles while repetirán las instrucciones anidadas en él mientras se cumpla una condición:
while <condition>:
<things to do>
El número de iteraciones es variable, depende de la condición.
+Como en el caso de los condicionales, los bloques se separan por sangrado sin necesidad de instrucciones del tipo end.
In [52]:
i = -2
while i < 5:
print(i)
i = i + 1
print("Estoy fuera del while")
In [38]:
# Para interrumpir un bucle WHILE se utiliza la instrucción BREAK
# Se pueden usar expresiones de tipo condicional (AND, OR, NOT)
i = 0
j = 1
while i < 5 and j == 1:
print(i)
i = i + 1
if i == 3:
break
LA FUNCIÓN ENUMERATE
Cuando trabajamos con secuencias de elementos puede resultar útil conocer el índice de cada elemento. La función enumerate devuelve una secuencia de tuplas de la forma (i, valor).
Mediante un bucle es posible recorrerse dicha secuencia:
In [39]:
# Creamos una lista llamada ciudades
# Recorremos dicha lista mediante la instrucción FOR asignando una secuencia de números (i) a cada valor de la lista
ciudades = ["Madrid", "Sevilla", "Segovia", "Valencia" ]
for (i, valor) in enumerate(ciudades):
print('%d: %s' % (i, valor))
In [40]:
# Uso de la función reversed
# la función reversed devuelve un iterador inverso de una lista
for (i, valor) in enumerate(reversed(ciudades)):
print('%d: %s' % (i, valor))